---
title: 第00期 | 环境搭建 & 递归 (一) | 基本数列递归
description: "本篇文章介绍了环境搭建、递归的基本概念、基本数列递归的求解方法。"
date: "2024-01-10"
lang: zh
tags:
  - C/C++
  - 编程
  - 算法
category: 笔记
cover: https://cdn.qladgk.com/images/20250508160131477.png
---

import Image from "@/components/mdx/Image";

<Image
  src="https://cdn.qladgk.com/images/20250508160131477.png"
  alt="cover"
  width={999}
  height={527}
  isArticleImage={true}
/>

在 B 站上偶然看到了这个系列 “从 0 开始的 C++ 算法课” ，感觉很适合入门，于是就跟着视频学习记录了一下。

> 原系列视频作者链接[【从 0 开始的 C++算法课】第 00 期 | 环境搭建 & 递归 (一) | 基本数列递归](https://www.bilibili.com/video/BV1Bu4y1Y7ow/)

需求：使用递归方式求解等差数列 1 4 7 10 13 … 第 n 项的值，要求输入 n 输出第 n 项的值

首先定义函数 f ，输入的参数为整数 n ，对于这个等差数列返回结果依然为整数，所以返回结果为整数 res

然后我们调用这个函数本身求出 res 的值，若输入的参数为 6 则函数计算流程如下

![](https://s2.loli.net/2024/01/10/NiPxZW4KYCjRTLc.png)

可以看到整个过程是依次往前计算，但是我们知道数列没有第 0 项，因此递归函数不能没有限制

![](https://s2.loli.net/2024/01/10/frJspkON4FL3YtE.png)

递归需要有起始项，避免无限制递归，因此需要手动设置 n = 1 时的 res 值

```C
if (n == 1){
                res = 1;
}
else{
                res = f(n-1)+3;
}
```

记得提前定义 res

完整代码如下

```C
#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 1)
    {
        res = 1;
    }
    else
    {
        res = f(n - 1) + 3;
    }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The value of the %d item is: %d", n, f(n));
    return 0;
}
```

作业

![](https://s2.loli.net/2024/01/10/xtQNJPzs7ywIChF.png)

题 1

```C
#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 1)
    {
        res = 2;
    }
    else
    {
        res = f(n - 1) * 2;
    }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The value of the %d item is: %d", n, f(n));
    return 0;
}
```

题 2

```c
#include <stdio.h>

int f(int n)
{
    int res;
    if (n == 0 || n == 1)
    {
        res = 1;
    }
    else
    {
        res = f(n - 1) * n;
        }
    return res;
}

int main()
{
    int n;
    printf("Please enter a value for 'n': ");
    scanf("%d", &n);
    printf("The factorial of %d is: %d", n, f(n));
    return 0;
}
```
